package com.tvsinfo.jdk.demo.case1_grammar;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
 * 行为参数化-排序实例
 */
public class SortDemo {

    public static void main(String[] args) {


        List<String> list = Arrays.asList("1.1.1", "1.1.2.1", "1.1.3", "1.1.2", "1.1.4", "1.2.2", "1.2.3", "1.3.0");

        //默认排序(正序1)
//        list.sort((String o1, String o2) -> o1.compareTo(o2));
        //(类型推断)
//        list.sort((o1,o2) -> o1.compareTo(o2));

        //(正序2)
//        list.sort(Comparator.naturalOrder());

        //(正序3)函数式接口+对象引用(类型推断)
        list.sort(String::compareTo);

        list.stream().forEach(System.out::println);

        System.out.println("---------------------------------");

        //实例2：条件排序-正序
//        list.sort(Comparator.comparing(s -> {
//            if (s.equals("1.3.0")) {
//                return "1.0";
//            }
//            return s;
//        }));
//        list.stream().forEach(System.out::println);


        //实例2：条件排序-倒叙
        list.sort(Comparator.comparing(s -> {
            if (s.equals("1.3.0")) {
                return "1.0";
            }
            return s;
        }, Comparator.reverseOrder()));

        list.stream().forEach(System.out::println);
    }

}
